<HTML>
<BODY>
<P>Core SSFNet classes for modeling and simulation of network protocols, protocol messages,
and operating system components.

<P>The principal classes of package SSF.OS are:</P>

<OL>
  <LI><CODE>ProtocolGraph</CODE>
  <LI><CODE>ProtocolSession</CODE>
  <LI><CODE>ProtocolMessage</CODE> and <CODE>PacketEvent</CODE>
</OL>

<P>This architecture makes it simple to add a new protocol without any
changes to the framework, provided its main class is derived from
ProtocolSession, and (if desired) comes with a private DML
configuration that extends the base ProtocolSession's DML schema.
Importantly, on shared memory machines SSF.OS provides significant
performance optimizations by implementing <I>zero-copy
message processing</I> and <I>protocol method call chaining</I>.</P>

<P>These classes allow to create an abstract protocol graph and install in it any
combination of protocols (in a generalized sense, including not only IP, TCP,
BGP, etc., but also network device drivers, and client/server applications).
The idea of SSF.OS has been originally inspired by the
<A HREF="http://www.cs.arizona.edu/xkernel/" TARGET="_blank">x-kernel</A>,
but the design of SSF.OS is simpler, and it differs from the x-kernel in many
ways.</P>

<P>Internet protocol models are packages built atop SSF.OS, such as SSF.OS.IP,
SSF.OS.TCP, SSF.OS.OSPF, etc., and their variants. ProtocolGraph provides
methods for establishing proper dependence relations among the installed protocols.
Each Internet protocol package SSF.OS.*  in the SSFNet distribution has a <CODE>test</CODE>
subdirectory with usage examples, and a suite of validation tests (TCP validation
has its own <A href="http://www.ssfnet.org/Exchange/tcp/index.html" TARGET="_blank">SSF.OS.TCP website</A>).</P>


</BODY>
</HTML>
